package com.shuang.hash1;

public class IsAnagram {
    public boolean isAnagram(String s, String t) {
        //哈希法 字符串仅包含小写字母 则定义一个有26个元素的数组（数组就属于一个哈希表）
        // 将26（a-z）个连续字母映射到数组的索引下标上a在下标0的位置 统计出现字母的次数
        // 例如a出现一次则让下标为零的位置元素加一 以此类推 统计s的时候 出现的字母次数都在数组中统计好（加法）
        // 统计t的时候则要每出现一次字母在相应的索引位置的元素减一（减法）
        // 然后判断数组中是否所有元素都为零即可，如果所有元素都为零则证明t是s的字母异位词 有不为零的元素则不是

        //定义数组 统计各个字母出现的次数 a出现的次数在索引零的位置
        int[] record = new int[26];

        //统计s字符串中各个字母在各个索引位置出现的次数
        for (int i = 0; i < s.length(); i++){
            record[s.charAt(i) - 'a']++;
        }

        //减去 t字符串各个字母在各个索引位置出现的次数
        for (int i = 0; i < t.length(); i++){
            record[t.charAt(i) - 'a']--;
        }

        //数组中有不等于零的元素 返回false
        for (int i = 0; i < record.length; i++){
            if (record[i] != 0){
                return false;
            }
        }

        //数组中所有元素都为零 返回true
        return true;
    }
}
